package EBM.BLL;

import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Util {
	
	/*
	 * 用户类型
	 */
	public static final String SYSTEM_ADMIN = "0";
	public static final String COMMON_USER = "1";
	public static final String REVIEW_USER = "2";
	
	/*
	 * 把状态描述转换成状态号
	 */
	public static String convertToStatusId(String tag){
		if(tag.equals("草稿"))
			return "0";
		if(tag.equals("新建"))
			return "1";
		if(tag.equals("定位"))
			return "2";
		if(tag.equals("修改"))
			return "3";
		if(tag.equals("验证"))
			return "4";
		if(tag.equals("挂起"))
			return "5";
		if(tag.equals("正常关闭"))
			return "6";
		if(tag.equals("重复关闭"))
			return "7";
		if(tag.equals("拒绝关闭"))
			return "8";
		if(tag.equals("无效"))
			return "9";
		if(tag.equals("其它"))
			return "10";
		return "-1";	
		
	}

	/*
	 * 把状态号转换成状态的描述
	 */
	public static String convertToStatusName(String id){
		if(id.equals("0"))
			return "草稿";
		if(id.equals("1"))
			return "新建";
		if(id.equals("2"))
			return "定位";
		if(id.equals("3"))
			return "修改";
		if(id.equals("4"))
			return "验证";
		if(id.equals("5"))
			return "挂起";
		if(id.equals("6"))
			return "正常关闭";
		if(id.equals("7"))
			return "重复关闭";
		if(id.equals("8"))
			return "拒绝关闭";
		if(id.equals("9"))
			return "无效";
		if(id.equals("10"))
			return "其它";
		return "";						
	}
	
	/*
	 * 获得等于str的id
	 */
	public static int findIdByStr(String str, ArrayList<String> list){
		int i;
		for(i = 0; i < list.size(); i++)
			if(list.get(i).toString().equals(str))
				break;
		return i;
	}
	
	/*
	 * 过滤非法字符
	 */
	public static String filter(String str){
		char[] tmp = new char[str.length()];
		for(int i = 0; i < str.length(); i++){
			char ch = str.charAt(i);
			if((ch >= 'a'&&ch <= 'z') || (ch >= 'A'&&ch <= 'Z') || (ch >= '0'&&ch <='9') || ch == '_')
				tmp[i] = str.charAt(i);
			else
				tmp[i] = '_';
		}
		return String.valueOf(tmp);
	}
	
	/*
	 * 验证项目Id的合法性
	 * 只能以字母开头，其他部分由字母、数字和.组成
	 */
	public  static boolean isValidProjectId(String s)
	{	
		Pattern pattern=Pattern.compile("^[a-zA-Z]{1}[A-Za-z0-9\\.]*$");   
		Matcher matcher=pattern.matcher(s);   
		 
		return matcher.find();
		
	}
	
	/*
	 * 验证项目名称的合法性
	 * 只能以字母和中文开头，其他部分由字母、中文、数字和.组成
	 */
	public  static boolean isValidProjectName(String s)
	{	
		Pattern pattern=Pattern.compile("^[a-zA-Z\\u4e00-\\u9fa5]{1}[A-Za-z0-9\\u4e00-\\u9fa5\\.]*$");   
		Matcher matcher=pattern.matcher(s);   
		 
		return matcher.find();
		
	}
	
	/*
	 * 验证项目版本号的合法性
	 * 以数字开头，其他部分由数字和.组成
	 */
	public  static boolean isValidProjectVersion(String s)
	{	
		Pattern pattern=Pattern.compile("^[0-9]{1}[0-9\\.]*$");   
		Matcher matcher=pattern.matcher(s);   
		 
		return matcher.find();
		
	}
	
	/*
	 * 验证子系统名称的合法性
	 * 由字母和数字组成
	 */
	public static boolean isValidProjectModel(String s)
	{
		Pattern pattern=Pattern.compile("^[A-Za-z0-9]+$");   
		Matcher matcher=pattern.matcher(s);   
		 
		return matcher.find();
		
	}
	
	/*
	 * 验证用户Id的合法性
	 * 位数<12，以字母开头，其他部分为字母、数字、下划线
	 */
	public static boolean isValidUserId(String s)
	{
		if(s.length()>12)
			return false;
		
		Pattern pattern=Pattern.compile("^[a-zA-Z]{1}[A-Za-z0-9\\_]*$");   
		Matcher matcher=pattern.matcher(s);   
		 
		return matcher.find();
	}
	
	/*
	 * 验证用户名的合法性
	 * 位数<12，由字母、汉字、数字、下划线构成,只能字母或中文开头
	 */
	public static boolean isValidUserName(String s)
	{
		if(s.length()>12)
			return false;

		Pattern pattern=Pattern.compile("^[a-zA-Z\\u4e00-\\u9fa5]{1}[A-Za-z0-9\\u4e00-\\u9fa5\\.]*$");   
		Matcher matcher=pattern.matcher(s);   
		 
		return matcher.find();
	}
	
	/*
	 * 验证密码的合法性
	 * 位数6-12，由字母、数字组成
	 */
	public static boolean isValidPassword(String s)
	{
		if(s.length()<6||s.length()>12)
			return false;
		Pattern pattern=Pattern.compile("^[A-Za-z0-9]+$");   
		Matcher matcher=pattern.matcher(s);   
		 
		return matcher.find();
	}
	
	//用户名和Id的格式为：name(id),分割后装入数组
	public static String[] splitUserNameId(String s)
	{
		String name;
		String id;
		int i =s.indexOf('(');
		if (i >= 0)
		{
			name = s.substring(0, i);
			id = s.substring(i+1,s.length()-1);
		}
		else
		{
			name = s;
			id = "-1";
		}
		
		String[] split = {name,id};
		return split;
		
	}
	
}
